package controlmercancias.dominio;

import java.util.regex.Pattern;

/**
 *
 * @author Hasier
 */
public class Coordenada {

    private String lat;
    private String lon;

    public Coordenada(String lat, String lon) {
        setLatitude(lat);
        setLongitude(lon);
    }

    private boolean match(String matching) {
        return Pattern.matches("[0-9]{1,2}º[0-5]?[0-9]'[0-5]?[0-9].?[0-9]{0,2}''", matching);
    }

    public String getLatitude() {
        return lat;
    }

    public void setLatitude(String lat) {
        if (lat == null) {
            throw new NullPointerException("La latitud no puede ser nula");
        }
        if (lat.trim().equals("")) {
            throw new IllegalArgumentException("La latitud no puede ser cadena vacía");
        }
        boolean match = match(lat);
        if (match) {
            this.lat = lat;
        } else {
            throw new IllegalArgumentException("El formato del argumento '" + lat + "' no es válido");
        }
    }

    public String getLongitude() {
        return lon;
    }

    public void setLongitude(String lon) {
        if (lon == null) {
            throw new NullPointerException("La longitud no puede ser nula");
        }
        if (lon.trim().equals("")) {
            throw new IllegalArgumentException("La longitud no puede ser cadena vacía");
        }
        boolean match = match(lon);
        if (match) {
            this.lon = lon;
        } else {
            throw new IllegalArgumentException("El formato del argumento '" + lon + "' no es válido");
        }
        this.lon = lon;
    }

    @Override
    public String toString() {
        return lat + "-" + lon;
    }
}
